package com.xing.msmServer.service.Impl;

import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.xing.msmServer.service.MSMService;
import com.xing.msmServer.utils.ConstantPropertiesUtilss;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Map;

/**
 * 短信服务业务层
 *
 * @author: xingfuhao
 * @create: 2022-03-24 22:29
 */
@Service
public class MSMServiceImpl implements MSMService {

    @Autowired
    private ConstantPropertiesUtilss config;


    /**
     * 发送短信的方法
     * @param param
     * @param phone
     * @return
     */
    @Override
    public boolean send(Map<Object, Object> param, String phone) {

        if(StringUtils.isEmpty(phone)){
            return false;
        }
        DefaultProfile profile =
//                DefaultProfile.getProfile(
//                        "default",
//                        "LTAI4FxxwxR7nfGX22brtuHT",
//                        "idsnOtD1Pi1QuTS9wbRAHMMFG3myDW"
//                );


                DefaultProfile.getProfile(
                        config.getRegionId(),
                       config.getAccessKeyId(),
                       config.getSecret()
                );
        IAcsClient client = new DefaultAcsClient(profile);

        //设置相关固定的参数
        CommonRequest request = new CommonRequest();
        //request.setProtocol(ProtocolType.HTTPS);
        request.setMethod(MethodType.POST);
        request.setDomain("dysmsapi.aliyuncs.com");
        request.setVersion("2017-05-25");
        request.setAction("SendSms");

        //设置发送相关的参数
        request.putQueryParameter("PhoneNumbers",phone); //手机号
        request.putQueryParameter("SignName","我的xmall购物商城"); //申请阿里云 签名名称
//        request.putQueryParameter("SignName","福豪购物商城"); //申请阿里云 签名名称
        request.putQueryParameter("TemplateCode","SMS_205121391"); //申请阿里云 模板code
        request.putQueryParameter("TemplateParam", JSONObject.toJSONString(param)); //验证码数据，转换json数据传递

        try {
            //最终发送
            CommonResponse response = client.getCommonResponse(request);
            boolean success = response.getHttpResponse().isSuccess();
            return success;
        }catch(Exception e) {
            e.printStackTrace();
            return false;
        }
    }

}